iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 13
1

今天我們要來介紹MongoDB,一個NOSQL資料庫
有關NOSQL的好處我們引用一篇文章:
CouchDB、MongoDB、Cassandra 和 HBase 等 NoSQL 資料庫旨在處理真正的巨量資料。實際上,你可以以幾乎沒有結構的資料庫儲存大量資料。此外,NoSQL 資料庫允許資料混合,以及允許不同類型的資料一起儲存。
只需要少許的努力,NoSQL 資料庫就能立即擴展多個資料中心。

今天我們選擇MONGODB的原因呢除了容易擴展之外,還有mongodb本身就用JSON格式儲存
官方載點:(https://docs.mongodb.com/manual/installation/)
我們就先來介紹基本的CRUD(Create,read,update,delete)
先下載mongodb的node套件

npm install mongodb

然後我們先來測試mongodb是否可以連接

var MongoClient = require('mongodb').MongoClient; 
// Connect to the db
MongoClient.connect("mongodb://localhost:27017/你mondodb的資料庫位址", function (err, client) {
  if(err) throw err;
  //Write databse Insert/Update/Query code here..
  console.log('mongodb is running!');
   client.close(); //關閉連線
}); 

如果資料庫位子有填對 會看到終端機上印出了mongodb is running!的訊息

接下來來看insert

var MongoClient=require('mongodb').MongoClient;
 
MongoClient.connect("mongodb://127.0.0.1:27017/test",function(err,client){
    if(err){
        console.log(err);
        console.log('connecting fail');
        return;
    }
    console.log('connecting');
    var db_client = client.db('test')
    var db_table = db_client.collection('test')
    console.log('connection success')
    db_client.collection('test',function(err,collection){
        collection.insertOne({ id:1, name:'test', data:123 });
     
        collection.countDocuments(function(err,count){
            if(err) throw err;
            console.log('Total Rows:'+count);
        });
    });
    db_table.find({}).toArray(function(err, result){
        if (err) throw err;
        console.log (result)
        client.close;
    });

})

成功後會看到插入了一個資料 然後會把插入的資料印出來

再來來看如何找尋剛剛插入的資料

var MongoClient=require('mongodb').MongoClient;
 
MongoClient.connect("mongodb://127.0.0.1:27017/test",function(err,client){
    var db_client = client.db('test')
    var db_table = db_client.collection('test')
    db_client.collection("test",function(err,collection){
        collection.find({name:"test"}).toArray(function(err,items){
            if(err) throw err;
            console.log(items);
            console.log("We found "+items.length+" results!");
        });
        db_table.find({}).toArray(function(err, result){
            if (err) throw err;
            console.log (result)
            client.close;
        });
    });
    client.close(); //關閉連線
})

從上面的程式可以看出,我們使用了兩種找法 一種是直接搜尋整個資料表 一種是直接用欄位搜尋
執行結果會像這樣
因為資料表只有一筆資料所以兩種都只會印出一筆
到現在講了插入資料和尋找資料 再來講更新資料的部份

var MongoClient=require('mongodb').MongoClient;
 
MongoClient.connect("mongodb://127.0.0.1:27017/test",function(err,client){
    if(err){
        console.log(err);
        console.log('connecting fail');
        return;
    }
    var db_client = client.db('test')
    var db_table = db_client.collection('test')
    db_client.collection('test', function(err,collection){
        collection.updateOne({id:1},{ $set: { name:'test', data:789}
    },
        {w:1}, function(err, result){
            if(err) throw err;
            console.log('update successful');
        });
        });
        client.close();
})

更新完之後會在看到update successful 然後在用find去找一次 就看到資料被更新了

最後要講刪除資料 如果資料不需要或是有其他情況需要刪除就會需要用到delete
一樣先看程式碼

    var db_client = client.db('test')
    var db_table = db_client.collection('person')
    db_client.collection('test',function(err,collection){
        collection.deleteOne({id:2},{w:1},function(err,result){
            if(err) throw err;
            console.log('collection remove');
        });
    });
    client.close(); //關閉連線

如果成功就會看到collection remove的訊息 並且再去查看資料庫的時候

就看到資料表裡的資料已經被移除了

今天我們講了mongodb基本的插入,尋找,更新跟刪除
明天我們就可以來試試把感測器的資料放進資料庫裡面
我們明天見摟


上一篇
DAY12 json格式介紹
下一篇
DAY14 MONGODB 儲存資料
系列文
初學者也能實做的環控系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言